#ifndef _ELEMENTSGENERIQUE
#define _ELEMENTSGENERIQUE

#include "NombreComplexe.H" 

typedef struct Intervalle Intervalle;
struct Intervalle
{
  int inf;
  int sup;
};

typedef void * Element;

void initialisationEltIntervalle(Element & e1);

void initialisationEltIntervalle(Element & e1, Element e2);
/*precondition : e2 initialise de type effectif intervalle
				 ou bien e2 adresse d'une variable de type intervalle
  postcondition : e1 de type effectif intervalle
				  clone de l'element correspondant à e2
*/

int plusPetitIntervalle(Element e1, Element e2);

int egalIntervalle(Element e1, Element e2);

int compareIntervalle (Element e1, Element e2);

void affectationIntervalle(Element &e1, Element e2);

void affectationIntervalle(Element &e1, int i, int j);
/*Precondition e1 initialise et e2 de type effectif int.
 * Postcondition : e1 = e2 avec e2 adresse de son clone.
 */

void afficherIntervalle(Element e);

void testamentIntervalle(Element &e);

/**TYPE EFFECTIF INT**/
void initialisationEltInt(Element & e1,Element e2);
/*precondition : e2 initialise de type effectif int
				 ou bien e2 adresse d'une variable de type int
  postcondition : e1 de type effectif int
				  clone de l'element correspondant à e2
*/

int compareInt(Element e1, Element e2);

void affectationInt(Element &e1, Element e2);
/*Precondition e1 initialise et e2 de type effectif int.
 * Postcondition : e1 = e2 avec e2 adresse de son clone.
 */

void afficherInt(Element e);

void testamentInt(Element &e);
/*precondition : e initialise de type effectif int.
 *postcondition : e supprime du tas.
 */

/**TYPE EFFECTIF COMPLEXE**/
void initialisationEltComplexe(Element & e1,Element e2);
/*precondition : e2 initialise de type effectif complexe
				 ou bien e2 adresse d'une variable de type complexe
  postcondition : e1 de type effectif complexe                 
				  clone de l'element correspondant à e2
*/

void affectationComplexe(Element &e1, Element e2);
/*Precondition e1 initialise et e2 de type effectif int.
 * Postcondition : e1 = e2 avec e2 adresse de son clone.
 */

void afficherComplexe(Element e);

void testamentComplexe(Element &e);
/*precondition : e initialise de type effectif int.
 *postcondition : e supprime du tas.
 */

#endif
